home *** CD-ROM | disk | FTP | other *** search
/ Amiga Magazin: Amiga-CD 1996 March / Amiga-CD 1996 #3.iso / pd-software / mui_3.1 / developer / oberon / examples / rbmainwindowclass.mod < prev    next >
Text File  |  1996-01-19  |  4KB  |  140 lines

  1. (*------------------------------------------
  2.  
  3.   :Module.      RBMainWindowClass.mod
  4.   :Author.      Albert Weinert  [awn]
  5.   :Address.     Moltkestr. 83 , 50859 Köln, Germany
  6.   :EMail.       a.weinert@darkness.gun.de
  7.   :Phone.       +49-221-480800
  8.   :Revision.    R.0
  9.   :Date.        10-Apr-1995
  10.   :Copyright.   Albert Weinert
  11.   :Language.    Oberon-2
  12.   :Translator.  AmigaOberon V3.20
  13.   :Contents.    <Kurzbeschreibung>
  14.   :Imports.     <Importiertes, Name/ShortCut des Autors>
  15.   :Remarks.     <Was Du willst, evtl. Usage>
  16.   :Bugs.        <Bekannte Fehler>
  17.   :Usage.       <Angaben zur Anwendung>
  18.   :RCSId.       $Id$
  19.   :History.     .0     [awn] 10-Apr-1995 : Erstellt
  20.  
  21. --------------------------------------------*)
  22. MODULE RBMainWindowClass;
  23.  
  24. IMPORT
  25.   e := Exec,
  26.   I := Intuition,
  27.   rc := RootClass,
  28.   m := Mui,
  29.   ms := MuiSimple,
  30.   mw := MUIWindow,
  31.   el := EditListClass,
  32.   u := Utility,
  33.   y := SYSTEM;
  34.  
  35. TYPE
  36.   Class = UNTRACED POINTER TO ClassDesc;
  37.   ClassDesc = RECORD( mw.ClassDesc );
  38.           END;
  39.  
  40.   pClose = STRUCT( msg : I.Msg );
  41.          level : LONGINT;
  42.        END;
  43.  
  44. CONST
  45.   tagBase = u.user + (64*65536);
  46.  
  47.   mClose = tagBase +1 ;
  48.  
  49. VAR
  50.   class -: I.IClassPtr;
  51.  
  52.   PROCEDURE ( VAR c: ClassDesc ) New*( VAR msg : I.OpSet ):e.APTR;
  53.     VAR win : e.APTR;
  54.     group, commandGroup, parameterGroup, resultGroup : m.Object;
  55.     tags : u.Tags2;
  56.     BEGIN
  57.       commandGroup := I.NewObject( el.class, NIL,
  58.                    m.aFrame, m.vFrameGroup,
  59.                    m.aFrameTitle, y.ADR( "Befehle" ),
  60.                    el.aNewText,    y.ADR("_Neu"),
  61.                    el.aRemoveText, y.ADR("_Entfernen"),
  62.                    el.aNewMenuText,    y.ADR("Neu"),
  63.                    el.aRemoveMenuText, y.ADR("Entfernen"),
  64.                    el.aHelpMenuText, y.ADR("Hilfe"),
  65.                    m.aShortHelp, y.ADR( "List der Befehle die der ARexx-Port versteht" ),
  66.                    u.end );
  67.       parameterGroup := I.NewObject( el.class, NIL,
  68.                    m.aFrame, m.vFrameGroup,
  69.                    m.aFrameTitle, y.ADR( "Parameter" ),
  70.                    el.aNewText,    y.ADR("Ne_u"),
  71.                    el.aRemoveText, y.ADR("Ent_fernen"),
  72.                    el.aUpText,    y.ADR("_Hoch"),
  73.                    el.aDownText, y.ADR("_Runter"),
  74.                    el.aNewMenuText,    y.ADR("Neu"),
  75.                    el.aRemoveMenuText, y.ADR("Entfernen"),
  76.                    el.aUpMenuText,    y.ADR("Hoch"),
  77.                    el.aDownMenuText, y.ADR("Runter"),
  78.                    el.aHelpMenuText, y.ADR("Hilfe"),
  79.                    m.aShortHelp, y.ADR( "Parameter des ausgewählten ARexx-Befehls" ),
  80.                    u.end );
  81.       resultGroup := I.NewObject( el.class, NIL,
  82.                    m.aFrame, m.vFrameGroup,
  83.                    m.aFrameTitle, y.ADR( "Resultate" ),
  84.                    el.aNewText,    y.ADR("Neu"),
  85.                    el.aRemoveText, y.ADR("Entfernen"),
  86.                    el.aUpText,    y.ADR("H_och"),
  87.                    el.aDownText, y.ADR("Run_ter"),
  88.                    el.aNewMenuText,    y.ADR("Neu"),
  89.                    el.aRemoveMenuText, y.ADR("Entfernen"),
  90.                    el.aUpMenuText,    y.ADR("Hoch"),
  91.                    el.aDownMenuText, y.ADR("Runter"),
  92.                    el.aHelpMenuText, y.ADR("Hilfe"),
  93.                    m.aShortHelp, y.ADR( "Rückgabewerte des ausgewählten ARexx-Befehls" ),
  94.                    u.end );
  95.       group := ms.HGroup( m.aGroupChild, commandGroup,
  96.               m.aGroupChild, parameterGroup,
  97.               m.aGroupChild, resultGroup,
  98.               u.end );
  99.       tags[1].tag := u.more;
  100.       tags[1].data := msg.attrList;
  101.       tags[0].tag := m.aWindowRootObject;
  102.       tags[0].data := group;
  103.       msg.attrList := y.ADR(tags);
  104.  
  105.       win := c.New^( msg );
  106.       IF win # NIL THEN
  107.     c.CopyClass( win );
  108.     m.DoMethod( win, m.mNotify, m.aWindowCloseRequest, e.true, win, 2, mClose, 0 );
  109.       END;
  110.       RETURN win;
  111.     END New;
  112.  
  113.   PROCEDURE ( VAR c : ClassDesc ) Close*( VAR msg : pClose ): e.APTR;
  114.     VAR app : m.Object;
  115.     BEGIN
  116.       ms.Get( c.object, m.aWindowApplication, app );
  117.       m.DoMethod( app, m.mApplicationReturnID, m.vApplicationReturnIDQuit );
  118.       RETURN NIL;
  119.     END Close;
  120.  
  121.   PROCEDURE Dispatch * ( cl : I.IClassPtr; obj : I.ObjectPtr; msg : I.MsgPtr ):e.APTR;
  122.     VAR c : Class;
  123.     BEGIN
  124.       IF msg.methodID # I.new THEN
  125.     c := rc.BoopsiToObj( cl, obj )(Class);
  126.       END;               
  127.       CASE msg.methodID OF
  128.     | mClose       : RETURN c.Close( msg^(pClose ) );
  129.       ELSE
  130.     RETURN mw.Dispatch( cl, obj, msg );
  131.       END;         
  132.     END Dispatch;     
  133.  
  134. BEGIN
  135.   class := rc.InitPrivFromClass( mw.class, Dispatch, SIZE( ClassDesc ), y.TYPEDESC( ClassDesc ) );
  136.   IF class = NIL THEN HALT(205) END;
  137. CLOSE
  138.   IF class # NIL THEN IF I.FreeClass( class ) THEN END END;
  139. END RBMainWindowClass.
  140.